package com.gxc.dbcore.service;

import java.util.List;

import com.gxc.dbcore.dao.SqlDao;
import com.gxc.dbcore.util.CompareItem;
import com.gxc.dbcore.util.PageInfo;
import com.gxc.dbcore.util.PageList;

public interface BeanService {

	/**
	 * 获取一条记录
	 * 
	 * @param sqlDao
	 * @param clazz
	 * @param oid
	 * @return
	 */
	public <T> T get(SqlDao sqlDao, Class<?> clazz, Object idValue);

	/**
	 * 创建一条记录
	 * 
	 * @param sqlDao
	 * @param object
	 * @return
	 */
	public int create(SqlDao sqlDao, Object object);

	/**
	 * 更新一条记录
	 * 
	 * @param sqlDao
	 * @param object
	 * @return
	 */
	public int update(SqlDao sqlDao, Object object);

	/**
	 * 删除一条记录
	 * 
	 * @param sqlDao
	 * @param clazz
	 * @param id
	 * @return
	 */
	public int delete(SqlDao sqlDao, Class<?> clazz, Object idValue);

	/**
	 * 删除多条记录
	 * 
	 * @param sqlDao
	 * @param clazz
	 * @param idArray
	 * @return
	 */
	public int delete(SqlDao sqlDao, Class<?> clazz, Object[] idValueArray);

	/**
	 * 获取符合条件的记录数
	 * 
	 * @param sqlDao
	 * @param object
	 * @return
	 */
	public long count(SqlDao sqlDao, Class<?> clazz,
			List<CompareItem> conditionList);

	/**
	 * 获取符合条件记录
	 * 
	 * @param sqlDao
	 * @param clazz
	 * @param conditionList
	 * @param fieldSort
	 * @return
	 */
	@SuppressWarnings("rawtypes")
	public List list(SqlDao sqlDao, Class<?> clazz,
			List<CompareItem> conditionList, String fieldSort);

	/**
	 * 获取符合条件的记录(分页)
	 * 
	 * @param sqlDao
	 * @param clazz
	 * @param conditionList
	 * @param fieldSort
	 * @param pageInfo
	 * @return
	 */
	public PageList listPage(SqlDao sqlDao, Class<?> clazz,
			List<CompareItem> conditionList, String fieldSort, PageInfo pageInfo);

}
